package cn.jobstart.search;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import cn.jobstart.pubInter.BaseSearch;
import cn.jobstart.model.CompanyJob;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import lombok.Data;
/**
*   @author sunke
*   @Date 2023-09-22 22:03:51
*   @description CompanyJobSearch      企业职位
*/


@Data
@ApiModel("企业职位CompanyJobSearch")
public abstract class CompanyJobSearch<Sub extends CompanyJobSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "版本")
    private Integer versionEq;
    @ApiModelProperty(value = "企业ID")
    private String companyIdEq;
    @ApiModelProperty(value = "职位名称")
    private String titleLike;
    @ApiModelProperty(value = "工作城市")
    private String workCityLike;
    @ApiModelProperty(value = "薪资标识 0:不限:salary_0,999:1千以下:SALARY_999,1999:1-2千:SALARY_1999,2999:2-3千:SALARY_2999,3999:3-4千:SALARY_3999,4999:4-5千:SALARY_4999,5999:5-6千:SALARY_5999,7999:6-8千:SALARY_7999,9999:0.8-1万:SALARY_9999,14999:1-1.5万:SALARY_14999,19999:1.5万-2万:SALARY_19999,29999:2万-3万:SALARY_29999,49999:3万-5万:SALARY_49999,50000:5万以上:SALARY_50000")
    private List salaryFlagIn;
    @ApiModelProperty(value = "薪资描述")
    private String salaryLike;
    @ApiModelProperty(value = "学历 0:不限:unlimit,1:初中及以下:middle,2:高中/中技/中专:Senior,3:大专:junior,4:本科:undergraduate,5:硕士:Master,6:博士:doctor")
    private List educationFlagIn;
    @ApiModelProperty(value = "工作所在省")
    private String workProvinceLike;
    @ApiModelProperty(value = "工作地区")
    private String workAreaLike;
    @ApiModelProperty(value = "工作经验 0:不限:unlimit,1:1年以内:one_down,2:1-3年:one_three,3:3-5年:three_five,4: 5-10年:five_ten,5:10年以上:ten_up")
    private List workExperienceFlagIn;
    @ApiModelProperty(value = "原始职位地址")
    private String oldUrlLike;
    @ApiModelProperty(value = "工作性质 1:全职:full_time,2:兼职:part_time,3:临时:temp,4:实习:intern_ship")
    private List natureIn;
    @ApiModelProperty(value = "联系人")
    private String linkmanLike;
    @ApiModelProperty(value = "联系电话")
    private String phoneLike;
    @ApiModelProperty(value = "大于招聘人数")
    private Integer needCountGreater;
    @ApiModelProperty(value = "小于招聘人数")
    private Integer needCountLess;
    @ApiModelProperty(value = "职位ID")
    private String jobIdEq;
    @ApiModelProperty(value = "渠道来源")
    private List channelIn;
    @ApiModelProperty(value = "来源职位ID")
    private String sourceJobIdEq;
    @ApiModelProperty(value = "职位描述")
    private String detailLike;
    @ApiModelProperty(value = "职位要求")
    private String requireLike;

    public CompanyJobSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return CompanyJob.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return CompanyJob.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return CompanyJob.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return CompanyJob.ID;
    }

    @Override
    public String  toString() {
        return "CompanyJobSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(CompanyJob.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(CompanyJob.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(CompanyJob.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(CompanyJob.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(CompanyJob.DEL_FLAG, delFlagEq);
        return getSubThis();
    }
    public Sub setVersionEq(Integer versionEq){
        this.versionEq = versionEq;
        setEqualField(CompanyJob.VERSION, versionEq);
        return getSubThis();
    }
    public Sub setCompanyIdEq(String companyIdEq){
        this.companyIdEq = companyIdEq;
        setEqualField(CompanyJob.COMPANY_ID, companyIdEq);
        return getSubThis();
    }
    public Sub setTitleLike(String titleLike){
        this.titleLike = titleLike;
        setLikeField(CompanyJob.TITLE, titleLike);
        return getSubThis();
    }
    public Sub setWorkCityLike(String workCityLike){
        this.workCityLike = workCityLike;
        setLikeField(CompanyJob.WORK_CITY, workCityLike);
        return getSubThis();
    }
    public Sub setSalaryFlagIn(List salaryFlagIn){
        this.salaryFlagIn = salaryFlagIn;
        setInField(CompanyJob.SALARY_FLAG, salaryFlagIn);
        return getSubThis();
    }
    public Sub setSalaryLike(String salaryLike){
        this.salaryLike = salaryLike;
        setLikeField(CompanyJob.SALARY, salaryLike);
        return getSubThis();
    }
    public Sub setEducationFlagIn(List educationFlagIn){
        this.educationFlagIn = educationFlagIn;
        setInField(CompanyJob.EDUCATION_FLAG, educationFlagIn);
        return getSubThis();
    }
    public Sub setWorkProvinceLike(String workProvinceLike){
        this.workProvinceLike = workProvinceLike;
        setLikeField(CompanyJob.WORK_PROVINCE, workProvinceLike);
        return getSubThis();
    }
    public Sub setWorkAreaLike(String workAreaLike){
        this.workAreaLike = workAreaLike;
        setLikeField(CompanyJob.WORK_AREA, workAreaLike);
        return getSubThis();
    }
    public Sub setWorkExperienceFlagIn(List workExperienceFlagIn){
        this.workExperienceFlagIn = workExperienceFlagIn;
        setInField(CompanyJob.WORK_EXPERIENCE_FLAG, workExperienceFlagIn);
        return getSubThis();
    }
    public Sub setOldUrlLike(String oldUrlLike){
        this.oldUrlLike = oldUrlLike;
        setLikeField(CompanyJob.OLD_URL, oldUrlLike);
        return getSubThis();
    }
    public Sub setNatureIn(List natureIn){
        this.natureIn = natureIn;
        setInField(CompanyJob.NATURE, natureIn);
        return getSubThis();
    }
    public Sub setLinkmanLike(String linkmanLike){
        this.linkmanLike = linkmanLike;
        setLikeField(CompanyJob.LINKMAN, linkmanLike);
        return getSubThis();
    }
    public Sub setPhoneLike(String phoneLike){
        this.phoneLike = phoneLike;
        setLikeField(CompanyJob.PHONE, phoneLike);
        return getSubThis();
    }
    public Sub setNeedCountGreater(Integer needCountGreater){
        this.needCountGreater = needCountGreater;
        setGreaterField(CompanyJob.NEED_COUNT, needCountGreater);
        return getSubThis();
    }
    public Sub setNeedCountLess(Integer needCountLess){
        this.needCountLess = needCountLess;
        setLessField(CompanyJob.NEED_COUNT, needCountLess);
        return getSubThis();
    }
    public Sub setJobIdEq(String jobIdEq){
        this.jobIdEq = jobIdEq;
        setEqualField(CompanyJob.JOB_ID, jobIdEq);
        return getSubThis();
    }
    public Sub setChannelIn(List channelIn){
        this.channelIn = channelIn;
        setInField(CompanyJob.CHANNEL, channelIn);
        return getSubThis();
    }
    public Sub setSourceJobIdEq(String sourceJobIdEq){
        this.sourceJobIdEq = sourceJobIdEq;
        setEqualField(CompanyJob.SOURCE_JOB_ID, sourceJobIdEq);
        return getSubThis();
    }
    public Sub setDetailLike(String detailLike){
        this.detailLike = detailLike;
        setLikeField(CompanyJob.DETAIL, detailLike);
        return getSubThis();
    }
    public Sub setRequireLike(String requireLike){
        this.requireLike = requireLike;
        setLikeField(CompanyJob.REQUIRE, requireLike);
        return getSubThis();
    }
}